/**
 * Package:com.goldcitynet.server.session;
 * $Id: UserSession.java,v 1.2 2009/03/24 03:36:59 yangc Exp $
 * Copyright(c) 2001-2005 www.afteryuan.com
 */
package com.afteryuan.server;

import com.afteryuan.server.command.down.CommandDown;

/**
 * ConnectSession接口定义客户端连接和通信的方法.
 *
 * 每一个登录用户一个session。不同框架，不同内容，所有与框架的依赖都在该接口的实现中完成。
 * 至少提供write(Object message)方法。
 * <p/>
 * <p><a href="UserSession.java.html"><i>View Source</i></a></p>
 *
 * @author <a href="mailto:afteryuan@afteryuan.com">$Author: yangc $</a>
 * @version $Revision: 1.2 $
 */
public interface ConnectSession {
    /**
     * 写入方法。
     * @param message
     */
    void write(CommandDown message);

    /**
     * 是否已经连接
     * @return boolean
     */
    boolean isConnected();

    /**
     * 是否已经关闭。
     * @return boolean
     */
    boolean isClosed();

    /**
     * 获取参数
     * @param key 参数名
     * @return Object 参数值
     */
    Object getAttribute(String key);

    /**
     * 设置参数
     * @param key 参数名
     * @param value 参数值
     */
    void setAttribute(String key,Object value);

    /**
     * 移除参数
     * @param key 参数名
     */
    void removeAttribute(String key);

    /**
     * 获取该session对应的用户code
     * @return 用户code
     */
    String getKey();

    /**
     * 关闭session
     */
    void close();
}